﻿/**
************************************************************
*@project Cookie
*@author xlxi
*@Mail 939898101@qq.com
*@ver version 1.0
*@time 2013-01-16
************************************************************
*/
var Cookie = {

    /**//*
	函数名称：Cookie.Get([string name])
	函数功能：得到Cookie
	参数：name 可选项，要取得的Cookie名称
	说明：name为空时将通过数组形式返回全部Cookie，name不为空时返回此Cookie名称的值，没有任何值时返回undefined
	*/
    Get: function (name) {
        var cv = document.cookie.split("; ");//使用"; "分割Cookie
        var cva = [], temp;
        /**//*循环的得到Cookie名称与值*/
        for (i = 0; i < cv.length; i++) {
            temp = cv[i].split("=");//用"="分割Cookie的名称与值
            cva[temp[0]] = unescape(temp[1]);
        }
        if (name) return cva[name];//如果有name则输出这个name的Cookie值
        else return cva;//如果没有name则输出以名称为key，值为Value的数组
    },

    /**//*
	函数名称：Cookie.Set(string name, string value[, int expires[, string path[, string domain[, string secure]]]])
	函数功能：存入Cookie
	参数：name 必要项，要存入的Cookie名称
		  value 必要项，要存入的Cookie名称对应的值
		  expires 可选项，Cookie的过期时间，可以填入以秒为单位的保存时间，也可以填入日期格式（wdy, DD-Mon-YYYY HH:MM:SS GMT）的到期时间
		  path 可选项，Cookie在服务器端的有效路径
		  domain 可选项，该Cookie的有效域名
		  secure 可选项， 指明Cookie 是否仅通过安全的 HTTPS 连接传送，0或false或空时为假
	说明：保存成功则返回true，保存失败返回false
	*/
    Set: function (name, value, expires, path, domain, secure) {
        //if (!name || !value) return false;//如果没有name和value则返回false
        //if (name == "" || value == "") return false;//如果name和value为空则返回false
        /**//*对于过期时间的处理*/
        if (expires) {
            /**//*如果是数字则换算成GMT时间，当前时间加上以秒为单位的expires*/
            if (/^[0-9]+$/.test(expires)) {
                var today = new Date();
                expires = new Date(today.getTime() + expires * 1000).toGMTString();
                /**//*判断expires格式是否正确，不正确则赋值为undefined*/
            } else if (!/^wed, d...{2} w...{3} d...{4} d...{2}:d...{2}:d...{2} GMT$/.test(expires)) {
                expires = undefined;
            }
        }
        /**//*合并cookie的相关值*/
        var cv = name + "=" + escape(value) + ";"
				 + ((expires) ? " expires=" + expires + ";" : "")
				 + ((path) ? "path=" + path + ";" : "path=/")
				 + ((domain) ? "domain=" + domain + ";" : "")
				 + ((secure && secure != 0) ? "secure" : "");
        /**//*判断Cookie总长度是否大于4K*/
        if (cv.length < 4096) {
            document.cookie = cv;//写入cookie
            return true;
        } else {
            return false;
        }
    },

    /**//*
	函数名称：Cookie.Del(string name[, string path[, string domain]])
	函数功能：删除Cookie
	参数：name 必要项，要删除的Cookie名称
		  path 可选项，要删除的Cookie在服务器端的有效路径
		  domain 可选项，要删除的Cookie的有效域名
	说明：删除成功返回true，删除失败返回false
	*/
    //Del: function (name, path, domain) {
    //    if (!name) return false;//如果没有name则返回false
    //    if (name == "") return false;//如果name为空则返回false
    //    if (!this.Get(name)) return false;//如果要删除的name值不存在则返回false
    //    /**//*合并Cookie的相关值*/
    //    document.cookie = name + "=;"
    //						+ ((path) ? "path=" + path + ";" : "path=/")
    //						+ ((domain) ? "domain=" + domain + ";" : "")
    //						+ "expires=Thu, 01-Jan-1970 00:00:01 GMT;";
    //    return true;
    //}
}


//  data: JSON.stringify({ person: { firstName: "Yehuda", lastName: "Katz" } }),
function ajaxGet(url, sucessCallback, option) {
    $.ajax({
        type: 'GET',
        url: url,
        cache: false,
        dataType: 'json',
        contentType: 'application/json',
        data: "",
        complete: function (obj) {
            if (!option || option.showLoading || !option.showLoading)
                NormalLoading.Hide();
        },
        success: function (json) {
            sucessCallback(json);
        },
        error: function () {
            sucessCallback({ success: false, info: "An error occurred while processing the request" });
        },
        beforeSend: function (request) {
            if (!option || option.showLoading || !option.showLoading)
                NormalLoading.Show();
            request.setRequestHeader("Token", WebSession.GetToken());
        }
    });
}

function ajaxPost(url, data, sucessCallback, option) {
    $.ajax({
        type: 'POST',
        url: url,
        cache: false,
        dataType: 'json',
        contentType: 'application/json',
        data: JSON.stringify(data),
        complete: function (obj) {
            if (!option || option.showLoading || !option.showLoading)
                NormalLoading.Hide();
        },
        success: function (json) {
            sucessCallback(json)
        },
        error: function () {
            sucessCallback({ success: false, info: "An error occurred while processing the request" });
        },
        beforeSend: function (request) {
            if (!option || option.showLoading || !option.showLoading)
                NormalLoading.Show();
            request.setRequestHeader("Token", WebSession.GetToken());
        }
    });
}


function myBrowser() {
    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
    var isOpera = userAgent.indexOf("Opera") > -1;
    if (isOpera) {
        return "Opera"
    }; //判断是否Opera浏览器
    if (userAgent.indexOf("Firefox") > -1) {
        return "FF";
    } //判断是否Firefox浏览器
    if (userAgent.indexOf("Chrome") > -1) {
        return "Chrome";
    }
    if (userAgent.indexOf("Safari") > -1) {
        return "Safari";
    } //判断是否Safari浏览器

    return "IE";
    //判断是否IE浏览器
}
var browserName = myBrowser();

function showNotCloseAlert(info, callback) {
    window.setTimeout(function () {
        $(".mui-popup-backdrop").show();
        mui.alert(info, "提示", "确定",
            function () { if (callback) callback(); });
        if (browserName == "IE") {
            $(".mui-popup-in .mui-popup-button").bind('click', function () { $(".mui-popup-in").hide(); if (callback) callback(); });
        }
    }
        , 200);
}

function showAlert(info, callback) {
    window.setTimeout(function () {
        $(".mui-popup-backdrop").show();
        mui.alert(info, "提示", "确定",
            function () { $(".mui-popup-backdrop").hide(); if (callback) callback(); });
        if (browserName == "IE") {
            $(".mui-popup-in .mui-popup-button").bind('click', function () { $(".mui-popup-backdrop").hide(); $(".mui-popup-in").hide(); if (callback) callback(); });
        }
    }
        , 200);
}
function showAlertAndRedirect(info, url) {
    window.setTimeout(function () {
        if (browserName == "IE") {
            $(".mui-popup-backdrop").show();
        }
        mui.alert(info, "提示", "确定",
            function () {
                $(".mui-popup-backdrop").hide();
                $(".mui-popup-in").hide();
                window.location.href = url;
            });
        if (browserName == "IE") {
            $(".mui-popup-in .mui-popup-button").bind('click', function () {
                $(".mui-popup-backdrop").hide();
                $(".mui-popup-in").hide();
                window.location.href = url;
            });
        }
    }
        , 200);
}

function showConfirm(text, okCallback, cancelCallback) {
    if (browserName == "IE") {
        $(".mui-popup-backdrop").show();
    }
    mui.confirm(text, "提示", null, function (confirmResult) {
        if (confirmResult.index) {
            if (okCallback) okCallback();
        } else {
            if (cancelCallback) cancelCallback();
        }
        $(".mui-popup-backdrop").hide();
        $(".mui-popup-backdrop").hide();
    });
    if (browserName == "IE") {
        $(".mui-popup-in .mui-popup-button").bind('click', function () {
            $(".mui-popup-backdrop").hide();
            $(".mui-popup-in").hide();
            if ($(this).text() == "确认") {
                if (okCallback) okCallback();
            } else {
                if (cancelCallback) cancelCallback();
            }
        });
    }

}


function getUrlParam(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) return unescape(r[2]); return null;
}

var WebSession = {
    GetToken: function () {
        var token = Cookie.Get("Token");
        return token;
    },
    GetWeixinUserType: function () {
        var weixinUserType = Cookie.Get("WeixinUserType");
        return weixinUserType;
    },
    CheckToken: function () {
        var token = Cookie.Get("Token");
        if (!token || token == "null") {
            return false;
        }
        return true;
    },
    Clear: function () {
        Cookie.Set("Token", "");
        Cookie.Set("WeixinUserType", "");
        Cookie.Set("OpenID", "");
    }
};

function serializeForm(formID) {
    var postData = $("#" + formID).serializeArray();
    var serializeObj = {};
    $(postData).each(function () {
        serializeObj[this.name] = this.value;
    });
    return serializeObj;
}

var NormalPopPicker = function (tapControlClass, dataArray, callBack) {
    var self = this;
    this.tapControlClass = tapControlClass;
    this.callBack = callBack;
    this.userPicker = null;
    this.init = function () {
        mui.init();
        //普通示例
        self.userPicker = new mui.PopPicker();
        self.userPicker.setData(dataArray);
        mui("body").on('tap', tapControlClass, function () {
            self.userPicker.show(function (items) {
                callBack(items[0]);
                //userResult.text(items[0].text);
                //userResult.innerText = JSON.stringify(items[0].text);
                //返回 false 可以阻止选择框的关闭
                //return false;
            });
        });
    };
    self.init();

    this.setSelectedValue = function (value) {
        self.userPicker.pickers[0].setSelectedValue(value, 2000);
    };
};

var MuiEventBinder = {
    BindTap: function (tapControlClass, callBack) {
        mui.init();
        mui("body").on('tap', tapControlClass, function () {
            if (callBack) callBack($(this));
        });
    }
};

var DefaultDtPicker = function (tapControlClass, _options, callBack) {
    var self = this;
    this.tapControlClass = tapControlClass;
    this.callBack = callBack;
    this.userPicker = null;
    this.userPickerDefaultValue = null;
    this.init = function () {
        mui.init();
        //普通示例
        //self.userPicker = new mui.PopPicker();
        //self.userPicker.setData(dataArray);
        mui("body").on('tap', tapControlClass, function () {

            var options = {
                type: "date", beginYear: 1940, endYear: 2016
            };
            if (_options) options = _options;

            /*
             * 首次显示时实例化组件
             * 示例为了简洁，将 options 放在了按钮的 dom 上
             * 也可以直接通过代码声明 optinos 用于实例化 DtPicker
             */

            self.userPicker = new mui.DtPicker(options);
            if (self.userPickerDefaultValue) {
                self.userPicker.setSelectedValue(self.userPickerDefaultValue);
            }

            self.userPicker.show(function (rs) {
                /*
                 * rs.value 拼合后的 value
                 * rs.text 拼合后的 text
                 * rs.y 年，可以通过 rs.y.vaue 和 rs.y.text 获取值和文本
                 * rs.m 月，用法同年
                 * rs.d 日，用法同年
                 * rs.h 时，用法同年
                 * rs.i 分（minutes 的第二个字母），用法同年
                 */
                //result.innerText = '选择结果: ' + rs.text;
                console.log(rs);
                self.userPickerDefaultValue = rs.value;
                if (callBack) callBack(rs);
                /* 
                 * 返回 false 可以阻止选择框的关闭
                 * return false;
                 */
                /*
                 * 释放组件资源，释放后将将不能再操作组件
                 * 通常情况下，不需要示放组件，new DtPicker(options) 后，可以一直使用。
                 * 当前示例，因为内容较多，如不进行资原释放，在某些设备上会较慢。
                 * 所以每次用完便立即调用 dispose 进行释放，下次用时再创建新实例。
                 */
                self.userPicker.dispose();
            });
        });
    };
    self.init();
    this.setSelectedValue = function (value) {
        self.userPickerDefaultValue = value;
    };

};